Dokumentacja do bramek wtyczki SMS

2003-05-16 v1.7 - nowy LuaPlus.dll
Zmiany

Wtyczka Konnekt->SMS wysy│a kr≤tkie wiadomo╢ci tekstowe przy pomocy skrypt≤w, kt≤re maj▒ do dyspozycji odpowiedni interfejs. DziΩki temu tekstowi dowiesz siΩ co umo┐liwia wtyczka, a przegl▒daj▒c gotowe bramki na pewno nauczysz siΩ pisaµ w│asne skrypty :). SMS mo┐e byµ wykorzystywany do bardzo wielu cel≤w, niekoniecznie zwi▒zanych z SMSami wysy│anymi na kom≤rki. Mo┐na np. przygotowaµ skrypt wrzucaj▒cy tekst na bloga, lub newsa na stronΩ...
Aktualnie jedynym obs│ugiwanym jΩzykiem skryptowym jest jΩzyk LUA.

Ka┐da bramka sk│ada siΩ z 3 czΩ╢ci: definicji w jΩzyku XML, skryptu w jΩzyku LUA i plik≤w dodatkowych jak logo (.ico). Poni┐ej znajdziesz opis wszystkich kolejnych czΩ╢ci...

Definicja w XML

Podczas uruchamiania programu w katalogu konnekt/sms wczytywane s▒ wszystkie pliki XML. Na ich podstawie przygotowywane s▒ bramki. Poni┐ej znajduje siΩ przyk│adowy XML razem z komentarzami, elementy pogrubione s▒ wymagane.

Format pliku musi byµ poprawny. Wbudowany parser nie posiada kontroli b│Ωd≤w i generalnie ma wyj▒tkowo uproszczon▒ konstrukcjΩ. Wszystkie atrybuty musz▒ byµ zawarte w cudzys│owach. Aktualnie rozpoznawane s▒ tylko &qt; w atrybutach i &lt i > w tek╢cie.
Jedyne dozwolone kodowanie to Windows-1250

<?xml version="1.0" encoding="Windows-1250"?>
<sms>

<id>ABC</id>
<!--Raz ustawiony, jednoznaczny, kr≤tki identyfikator-->
<name>Przyk│ad</name>
<!--Nazwa bramki-->
<logo>ico.ico</logo>
<!--Logo - format .ico, rozmiary 16x16 i 32x32. Dozwolony (i zalecany) jest standard XP.-->
<author>...</author>
<!--Autor-->
<version>luty 2003</version>
<!-- Wersja -->
<info>Ble ble ble</info>
<!--Informacja pokazuj▒ca siΩ w oknie wysy│ania-->
<authorURL>http://.../</authorURL>
<!-- URL zwi▒zany z autorem -->
<gateURL>http://.../</gateURL>
<!-- URL zwi▒zany z bramk▒ -->
<acceptNumber>(\+48)?0?[56]\d{8}</acceptNumber>
<!-- Wyra┐enie regularne - wzorzec (standard Perl/PCRE) definiuj▒ce obs│ugiwane numery.
Znaki specjalne trzeba koniecznie poprzedzaµ znakiem \ (backslash).
'/' jest r≤wnie┐ znakiem specjalnym!
Je┐eli wpisany numer telefonu pasuje do wzorca, bramka zostaje wy╢wietlona na li╢cie
Wyja╢nienie przyk│adu, kolejne czΩ╢ci wzorca dopasowywane s▒ do kolejnych czΩ╢ci numeru:
(\+48)? - Mo┐e (?) siΩ pojawiµ ci▒g +48. `+' jest znakiem specjalnym.
0? - Mo┐e (?) siΩ pojawiµ znak 0.
[56] - Musi siΩ pojawiµ znak '5' lub '6' .
\d{8} - Musi siΩ byµ dok│adnie 8 ({8}) cyfr (\d - od digit).
A wiΩc numer +48600000000 bΩdzie pasowa│, ale 0700111111 ju┐ nie (0 na pocz▒tku pasuje, ale 7 ju┐ nie)...
WiΩcej informacji na ten temat znajdziesz tutaj. -->
<scriptFile>pf.lua</scriptFile>
<!-- Plik ze skryptem. Dozwolone s▒ pliki *.lua i *.luac (wersja skompilowana). -->
<maxChars>469</maxChars>
<!-- Maksymalna liczba znak≤w na wiadomo╢µ. -->
<maxSendCount>20</maxSendCount>
<!-- Liczba mo┐liwych wys│a± przez bramke. Po przekroczeniu tej liczby zostanie wy╢wietlone ostrze┐enie. -->
<maxParts>1</maxParts>
<!-- Na ile czΩ╢ci mo┐na podzieliµ jedn▒ wiadomo╢µ. Je┐eli bramka dzieli sama, trzeba podaµ "1"-->
<maxCharsOnServer>150</maxCharsOnServer>
<!-- Maksymalna liczba znak≤w na jedn▒ czΩ╢µ, je┐eli serwer dzieli wiadomo╢ci.
Do ustawienia tylko, gdy maxParts jest r≤wny 1, lub 0 -->
<signature disabled="1">Podpis</signature>
<!-- Informacja przy sygnaturce. Przydaje siΩ, gdy sygnaturka ma specyficzny format.
disabled - okno sygnaturki zostanie wy│▒czone. -->
<params>
<!-- Lista parametr≤w przekazywanych do skryptu, kt≤re mog▒ byµ edytowane w konfiguracji
-->
<param name="ABCtext" type="string" tip="Ble ble" default="TEXT">Wpisz co╢</param>
<!-- Opis parametru w konfiguracji.
name
Kr≤tka, jednoznaczna nazwa parametru.
type
Typ - string , int , text , bool , pass , hidden.
Dodatkowo, je╢li podany jest typ "session" zmienna nie bΩdzie dostΩpna w konfiguracji, a jej warto╢µ bΩdzie pamiΩtana a┐ do zamkniΩcia programu.
tip
Podpowied╝ wy╢wietlana w konfiguracji.
default
Warto╢µ domy╢lna.
-->
</params>
</sms>

skrypt (LUA)

Aby wys│aµ wiadomo╢µ, SMS kompiluje skrypt i uruchamia go za ka┐dym razem od nowa! Jednym s│owem stan skryptu i jego zmiennych nie bΩdzie pamiΩtany pomiΩdzy wywo│aniami. Je┐eli musisz co╢ zapamiΩtaµ pomiΩdzy sesjami do wykorzystania s▒ funkcje getVar i setVar...
Skrypty mog▒ byµ r≤wnie┐ w skompilowanej formie (*.luac). Jedyny kompilator z jakim wsp≤│pracuje sms.dll jest ten dostarczony razem z LuaPlus. Skrypt musi posiadaµ jedn▒ funkcjΩ - sendSMS do kt≤rej, jako jedyny parametr przekazywana jest tablica asocjacyjna z tymi kluczami/warto╢ciami:

msg
Tre╢µ wiadomo╢ci. Je┐eli wiadomo╢µ by│a d│u┐sza ni┐ maxChars ka┐da z czΩ╢ci wysy│ana jest osobno, a na pocz▒tku wiadomo╢ci do│▒czony jest jej numer.
to
Numer docelowy (mo┐e byµ dowolnym ci▒giem znak≤w).
from
Sygnaturka / Podpis
...
Pozosta│e elementy listy to parametry zdefiniowane w XMLu.

Zwr≤cona warto╢µ nie jest brana pod uwagΩ.

Katalogiem aktywnym skrypt≤w jest katalog Konnekta.
Je┐eli bramka ma korzystaµ z rozszerzonych funkcji internetowych, mo┐e okazaµ siΩ przydatny skrypt "const.lua" ze sta│ymi do przekazywania do funkcji...

SMS.dll jest obecnie skompilowany z bibliotek▒ LuaState chodz▒c▒ na LUA w wersji 4.2.1.

Funkcje

Du┐a czΩ╢µ atrybut≤w jest my╢lΩ na tyle jasna, ┐e pozwoli│em sobie ich nie opisywaµ.
Je┐eli funkcja zwraca wiΩcej ni┐ jedn▒ warto╢µ, s▒ one podane w kolejno╢ci zwracania.
Je┐eli funkcja zwraca bool, to oznacza on, czy operacja siΩ uda│a, czy nie...

Podstawowe

setInfo(info [, typ])
Dodaje now▒ informacjΩ do okienka ze stanem przesy│anych wiadomo╢ci.
info - tekst
typ - typ (INFO_ w const.lua)
setError([komunikat])
Ustawia komunikat b│Ωdu. Ca│a operacja bΩdzie uznana za nieudan▒.
setSuccess([komunikat])
Ustawia komunikat "sukcesu". Ca│a operacja bΩdzie uznana za udan▒ (domy╢lnie jest).
bool setParam(nazwa , warto╢µ)
Ustawia warto╢µ parametru (zdefiniowanego w XMLu).
bool setVar(nazwa , warto╢µ)
Ustawia zmienn▒ bramki. Zmienne przechowywane s▒ przez ca│y czas dzia│ania programu, i mo┐na je odczytywaµ przy pomocy getVar. Aby usun▒µ zmienn▒, trzeba wywo│aµ setVar tylko z pierwszym parametrem.

Od wersji 1.7 mo┐na czytaµ/ustawiaµ zmienne obs│uguj▒ce bramkΩ jak:
warto╢µ getVar(nazwa)
Pobiera warto╢µ zmiennej bramki.
refreshStatus()
Od╢wie┐a zawarto╢µ statusu okienka (ilo╢µ wprowadzonych znak≤w itp.).
LOG(tekst)
Zapisuje do konnekt.log informacjΩ tekstow▒. Do│▒czane s▒ do niej fragment przesy│anej wiadomo╢ci i nazwa bramki.
include(nazwa_pliku)
Wykonuje plik tak samo jak dofile, z t▒ r≤┐nic▒, ┐e ╢cie┐ka jest relatywna do ╢cie┐ki aktualnie wykonywanego skryptu.
czas time()
Zwraca aktualny czas w sekundach, tak samo jak f-cja time w C.
tekst_w_iso cp2iso(tekst_w_cp)
Zmienia kodowanie Windows-1250 na Iso-8859-2
tekst_w_cp iso2cp(tekst_w_iso)
Zamienia kodowanie znak≤w Iso-8859-2 na Windows-1250
tekst_bez_polskich hidePL(tekst)
Usuwa ogonki, w tek╢cie kodowanym w standardach zar≤wno CP jak i ISO.
nowy_tekst urlEncode(tekst)
Zamienia wszystkie znaki nie alfa-numeryczne na %warto╢µ_znaku_w_hexie
nowy_tekst urlDecode(tekst)
Odwraca proces wykonany przez urlEncode :)

Okna dialogowe

alert(tekst [ , tytu│])
Wy╢wietla standardowe okienko dialogowe.
bool confirm(zapytanie [ , tytu│])
Wy╢wietla standardowe zapytanie TAK/NIE i zwraca true/false.
token getToken(info , obraz)
Wy╢wietla informacjΩ, obrazek, pole do wpisywania tekstu i zwraca wpisan▒ warto╢µ. Os│awionym przyk│adem s▒ tokeny Ideii.
info - informacja wy╢wietlana nad obrazkiem.
obraz - ╢cie┐ka do pliku z obrazkiem do wy╢wietlenia.

token - wpisany tekst.

Wyra┐enia regularne

Je┐eli nie znasz Regular Expressions, poczytaj ich opis na stronie www.php.net
Wszystkie wzorce musz▒ byµ "zamkniΩte" w dwa takie same znaki nie alfa-numeryczne. np.:
"/[abc]+/" , lub "#[abc]#"
Drugi przyk│ad jest wygodne o tyle, ┐e nie wymaga escape'owania znaku '/'. Na ko±cu, za znakiem zamkniΩcia wzorca mo┐na podawaµ standardowe flagi jak:
i , m, s , x ,
jak r≤wnie┐ flagi rozszerzone jak:
A - wzorzec przyr≤wnywany jest do ca│ego tekstu , D - znak $ oznacza tylko koniec tekstu , 8 - tekst jest w formacie UTF8.
Trzeba pamiΩtaµ, ┐e przekazywane │a±cuchy znak≤w s▒ escape'owane znakiem '\'. Wszystkie '\' kt≤re musz▒ znale╢µ siΩ we wzorcu musz▒ byµ wpisane dwukrotnie. Aby tego unikn▒µ, mo┐na tekst przekazywaµ jako [[....]].
wynik preg_match(wzorzec , tekst [ , trafienia])
Wykonuje przyr≤wnanie do wzorca.
tekst - tekst do przyr≤wnania
trafienia - tablica do kt≤rej zostan▒ zapisane wyniki. Na pozycji 0 zostanie zapisany ca│y pasuj▒cy fragment tekstu, a na kolejnych fragmenty pasuj▒ce do poszczeg≤lnych podwzorc≤w.
wynik - 0 , lub 1 + liczba pasuj▒cych podwzorc≤w.
wynik preg_matchAll(wzorzec , tekst [ , trafienia])
Wykonuje przyr≤wnanie do wzorca. Wzorzec nak│adany jest wielokrotnie na ca│y tekst.
warto╢ci preg_matchReturn(wzorzec , tekst)
Po przyr≤wnaniu pasuj▒cy fragment tekstu zwracany jest jako pierwszy, a nastΩpnie wszystkie pasuj▒ce podzworce. Np:
data , rok , miesiac , dzien = preg_matchReturn('/(\\d{4})-(\\d{1,2})-(\\d{1,2})'/ , 'Dzi╢ jest 2003-02-20');
nowy_tekst preg_replace(wzorzec , zamiana , tekst [ , limit=0])
Podmienia tekst wed│ug podanego wzorca.
zamiana - tekst, kt≤rym bΩd▒ podmieniane pasuj▒ce do wzorca fragmenty tekstu. Mo┐na wykorzystywaµ znalezione podwzorce, s│u┐▒ do tego znaki $ (jak w Perlu) i \ (jak w PHP).
Po $ lub \ trzeba podaµ numer podwzorca od 0 do 9, gdzie 0 jest ca│ym pasuj▒cym fragmentem.
Podobnie jak w Perlu $& jest r≤wnoznaczne $0.
limit - limit │▒cznej ilo╢ci wykonywanych podmian. 0 - bez limitu

Obs│uga sieci

Funkcje obs│ugi sieci bazuj▒ w pe│ni na f-cjach sieciowych windowsowej biblioteki WinInet, tej samej, z kt≤rej korzysta Internet Explorer. Na MSDN mo┐na znale╝µ ich pe│n▒ dokumentacjΩ... Funkcje maj▒ te same nazwy, i zbli┐one atrybuty (kolejno╢µ na og≤│ jest identyczna, nie ma za to atrybut≤w zbΩdnych i w niekt≤rych przypadkach tych, kt≤rych obs│ugi po prostu tutaj nie ma...). W miarΩ mo┐liwo╢ci zachowa│em tutaj podobne nazwy atrybut≤w.
Wszystkie utworzone uchwyty powinno siΩ zamykaµ, ale nie trzeba, SMS jest wyposa┐ony w kolektor ╢mieci i po zako±czeniu wykonywania skryptu sam je zwolni.
HSession InternetOpen([UserAgent])
Tworzy sesjΩ. Pierwsza rzecz do wywo│ania.
HConnection InternetConnect(HSession , ServerHost [ , ServerPort=80 , UserName , Password ])
Nawi▒zuje po│▒czenie z podanym serwerem (IP lub domena).
HRequest HttpOpenRequest(HConnection[ , Method=GET , Action=/ , Referrer , Flags])
Tworzy zapytanie (jeszcze go nie wysy│a!). Wersja ustawiona jest na sztywno na HTTP/1.0
Method - GET / POST
Action - plik/katalog o kt≤ry chcemy siΩ "pytaµ". Np "/open.php?module=forum".
Flags - INTERNET_FLAG_* z const.lua
bool HttpSendRequest(HRequest [ , Header , Data ])
Wysy│a zapytanie
Header - dodatkowe nag│≤wki do do│▒czenia
Data - dodatkowe dane do do│▒czenia po nag│≤wkach. W tym atrybucie przekazujemy to co chcemy POSTowaµ.
Data InternetReadFile(HRequest)
Pobiera wynik wys│anego zapytania.
bool InternetWriteFile(HRequest , data)
W tej chwili nie widzΩ jeszcze zastosowania w skryptach... Ale na pewno przyda siΩ kiedy╢ przy obs│udze FTP.
InternetCloseHandle(HINTERNET)
Zamyka dowolny otwarty uchwyt sieciowy (H*)
Cookie InternetGetCookie(URL)
Pobiera Cookie dla podanego URL'a
bool InternetSetCookie(URL , Name , CookieData)
Ustawia Cookie dla podanego URLa
ErrorNo , ErrorMsg InternetGetLastResponseInfo()
Pobiera kod b│Ωdu ostatniej operacji. Przy HTTP najczΩ╢ciej niewiele zwr≤ci...
Info HttpQueryInfo(HRequest , InfoLevel)
Pobiera informacjΩ o zapytaniu. Przydaje siΩ do analizowania nag│≤wk≤w odpowiedzi serwera, zw│aszcza HTTP_QUERY_STATUS_CODE i HTTP_QUERY_STATUS_TEXT
InfoLevel - HTTP_QUERY_* w const.lua
bool InternetSetOption(HINTERNET , Flag , Data)
Ustawia opcjΩ kt≤rego╢ z uchwyt≤w.
Flag - INTERNET_OPTION_ w const.lua
Data InternetQueryOption(HINTERNET , Flag)
Pobiera opcjΩ kt≤rego╢ z uchwyt≤w.
Flag - INTERNET_OPTION_ w const.lua

Zmiany

v1.7

v1.6

v1.4


 ©Copyright 2002-2003 Stamina